# 栈（stack）是一种遵循先入后出逻辑的线性数据结构

#  栈的常用操作
# push()	元素入栈（添加至栈顶）
# pop()	    栈顶元素出栈
# peek()	访问栈顶元素
# len(stack)       获取栈的长度
# len(stack) == 0  判断是否为空

# 我们会使用python中的list来模拟栈 并在程序逻辑上忽略与栈无关的操作
stack: list[int] = []

stack.append(1) # 元素入栈（添加至栈顶）
stack.append(3)
stack.append(2)
stack.append(5)
stack.append(4)


pop: int = stack.pop() # 元素出栈
# print(pop)

pop: int = stack.pop() # 元素出栈
# print(pop)

# 访问栈顶元素
peek = stack[-1]
print(peek)



# dfs(4,A,B,C)
# dfs(3,A,C,B) --> move(A,C) --> dfs(3,B,A,C)
# dfs(2,A,B,C) --> move(A,B) --> dfs(2,C,A,B)
# dfs(1,A,C,B) --> move(A,C) --> dfs(1,B,A,C)
# move(A,B)

# dfs(2,C,A,B)
# dfs(1,C,B,A) --> move(C,B) --> dfs(1,A,C,B)
# move(C,A)